home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / objtba.zip / MMGRVAR.DOC < prev    next >
Text File  |  1993-01-04  |  23KB  |  520 lines

  1.   
  2.                                    MMGRVAR.PAS Demo progam   Page  1    
  3.   
  4.   
  5.   UNIT MMGRVAR;
  6.   { ******************************************************************
  7.     Support UNIT for MMGR.PAS.
  8.     Declares Global Variables and Constants and types.  Handles
  9.     Initialization routines for most of the variables.
  10.   
  11.     (c) 1990 T W Harden, all rigths reserved.
  12.   
  13.     This UNIT relies heavely on ObjectBase and ObjectInterFace
  14.     Developement ToolBoxes. Most of the types are Objects that
  15.     are defined in one of the ToolBox Units.
  16.   
  17.     ****************************************************************** }
  18.   INTERFACE
  19.   
  20.   USES userio,  { ObjectInterFace - Primary Console I/O routines      }
  21.        forms,   { ObjectInterFace - Manages the Form Objects          }
  22.        windows, { ObjectInterFace - Handles General Window functions, }
  23.                 {                   Menus                             }
  24.        fields,  { ObjectInterFace - Defines Screen Fields             }
  25.        utility, { ObjectInterFace - Interfaces program to help system }
  26.                 {                   and provides other basic,         }
  27.                 {                   generalized functions.            }
  28.        OopBase; { OjbectBase      - Low level file routines.          }
  29.   
  30.   CONST
  31.   { Filename aliases - Makes life easier when specific filenames must }
  32.   { be used.                                                          }
  33.     HelpFileName= 'MMGR.HLP';
  34.     CompanyData = 'COMPANY.DAT';
  35.     PersonData  = 'PERSON.DAT';
  36.     CompanySysNdx = 'COMPCD.NDX';
  37.     CompanyUserNdx = 'COMPALPH.NDX';
  38.     PersonSysNdx = 'PRSNCD.NDX';
  39.     PersonUserNdx = 'PRSNALPH.NDX';
  40.     ContactData = 'CONTACT.DAT';
  41.     ContactCompAccess = 'CONTCCD.NDX';
  42.     ContactPrsnAccess = 'CONTPCD.NDX';
  43.   { Common Format strings }
  44.     PhnMask = '(999)999-9999';
  45.     ZipMask = '99999-9999';
  46.   { Miscellaneous constants }
  47.   
  48.   TYPE
  49.     RecordStamp = RECORD   { standard information every record should have }
  50.                     RStatus, { Used in nonindexed sequential search. nonzero }
  51.                              { value means deleted.                          }
  52.                     InStamp,               { Date of record creation }
  53.                     UpStamp : longint;     { Date record was last updated }
  54.                     Locked  : Boolean;
  55.                   END;
  56.   
  57.     CompanyType = RECORD                      { Company Entity }
  58.                     RcSt       : RecordStamp;
  59.                     Code       : String[5];   { Primary key - System defined}
  60.                     Alpha      : String[12];  { Primary Key - User Defined  }   
  61.                                    MMGRVAR.PAS Demo progam   Page  2    
  62.   
  63.   
  64.                     Name       : String[50];  { Company Name                }
  65.                     Addr1      : String[30];  { Address Line 1              }
  66.                     Addr2      : string[30];  { Address Line 2              }
  67.                     City       : String[20];  { City                        }
  68.                     St         : String[2];   { State postal abbreviation   }
  69.                     Zip        : String[9];   { ZipCode '999999999'         }
  70.                     Phone      : String[10];  { Phone No '9999999999'       }
  71.                     Notes      : String[50];
  72.                     flag       : Boolean;     { Used to select or deselect  }
  73.                     Future     : array[1..255] of BYTE;  { allow for mods   }
  74.                   END;
  75.   
  76.     PersonType  = RECORD                      { Person Entity }
  77.                     RcSt       : RecordStamp;
  78.                     Code       : String[5];   { Primary Key - System Defined }
  79.                     LName      : String[12];  { Last Name                    }
  80.                     FName      : String[10];  { First Name                   }
  81.                     MName      : String[10];  { Middle Name                  }
  82.                     AlphaK     : String[12];  { Primary Key - LName+FName[1] }
  83.                     Salute     : String[12];  { Salutation                   }
  84.                     Title      : String[4];   { Mr, Mrs, Miss, Ms, Dr        }
  85.                     Flag       : Boolean;     { Used to select or deselect   }
  86.                     Future     : Array[1..224] of BYTE;  { allow for mods   }
  87.                   END;
  88.   
  89.     ContactType = RECORD                      { Contact Relation Definition }
  90.                     RcSt       : RecordStamp;
  91.                     PersonCode : String[5];   { Foriegn Key - NoNulls       }
  92.                     CompanyCode: String[5];   { Foriegn Key - NoNulls       }
  93.                     Position   : String[15];  { Describes relationship      }
  94.                     flag       : Boolean;     { Used to select              }
  95.                     Future     : Array[1..255] of BYTE;  { allow for mods   }
  96.                   END;
  97.   { The following enumerated type allows for a more comprehensible method }
  98.   { of specifying the index of the help text used by the helpw object.    }
  99.   { The text file that stores the help uses a semaphor to demark section  }
  100.   { boundaries.  The text required for any given enumeration is           }
  101.   { ord(helplevels) semaphors from the begining of the helpfile.          }
  102.      helplevels = (overview,MMhelp,companyhelp,personhelp,
  103.                    CompanyEdithelp,companyaddhelp,companycontacthelp,
  104.                    comp2prsnaddhelp,companyfindhelp,personedithelp,
  105.                    personaddhelp,personfindhelp,prsn2compaddhelp,
  106.                    personcontacthelp,contactdel,Reporthelp,UtilHelp,
  107.                    ColorHelp,ReportFormHelp,LabelHelp,TestPrintHelp);
  108.   
  109.   VAR
  110.     OldMode      : word;
  111.     Company      : CompanyType;
  112.     Person       : PersonType;
  113.     Contact      : ContactType;
  114.     MainMenu,
  115.     CompanyMenu,
  116.     PersonMenu,
  117.     CompContMenu,
  118.     PrsnContMenu,
  119.     PersonContDelMenu,   
  120.                                    MMGRVAR.PAS Demo progam   Page  3    
  121.   
  122.   
  123.     ReportMenu,
  124.     LabelsMenu,
  125.     CompLstMenu,
  126.     DeviceMenu,
  127.     UtilMenu : Menu;       { ObjectInterFace Menu Objects}
  128.     CompForm,
  129.     PrsnContForm,
  130.     PersonForm,
  131.     CompContForm : Form;   { ObjectInterFace Form Objects }
  132.     EmptyFileMsg,
  133.     dbloadMsg,
  134.     dbclosemsg,
  135.     notreadymsg,
  136.     NoPrinterMsg,
  137.     SetPrinterMsg,
  138.     PrintingMsg : message; { ObjectInterFace Message Objects }
  139.     Choice : integer;
  140.     Finished : Boolean;
  141.     Dbase : db;            { ObjectBase DB Object }
  142.     SysExit : Pointer;
  143.   
  144.   PROCEDURE InitForms;
  145.   PROCEDURE InitMenus;
  146.   
  147.   
  148.   IMPLEMENTATION
  149.   
  150.   PROCEDURE InitForms;
  151.   { This Procedure uses the ObjectInterFace Form and Field OBjects to  }
  152.   { Define The Form.                                                   }
  153.   { The Field Objects are Extensible and tell the form how to process  }
  154.   { various data types required.                                       }
  155.   
  156.   var M : menuarray;  { Defined in Windows Unit of ObjectInterFace     }
  157.   
  158.   BEGIN      { InitForms }
  159.   { Initialize  CompForm }
  160.   { Define Window deminsions , Title , and prompt}
  161.     CompForm.Init(2,5,75,17,DataBorder,' COMPANY MAINT. FORM ',
  162.     ' <Ctrl Z> Exits ');
  163.   { Define the Fields that are found in form }
  164.     CompForm.Load(New(StrFldPtr,init(15, 2, SizeOf(company.Alpha)-1,
  165.                                     'AlphaK:','Enter Alphabetic Search Key...',
  166.                                     'UUUUUUUUUUUU',@company.Alpha)));
  167.     CompForm.Load(New(TglFldPtr,Init(50,2,8,'Selected','        ','',
  168.                                     @Company.Flag)));
  169.     CompForm.Load(New(DspFldPtr,init(35, 2, SizeOf(Company.Code)-1,
  170.                                     'Code:',
  171.                                     @Company.Code)));
  172.     CompForm.Load(New(StrFldPtr,init(15, 3, SizeOf(company.Name)-1,
  173.                                     'Name:','Enter Company Name...',
  174.                                     Rpt('W',sizeOf(company.Name)-1),
  175.                                     @company.Name)));
  176.     CompForm.Load(New(StrFldPtr,init(15, 4, SizeOf(company.addr1)-1,
  177.                                     'Street:','Enter PO Box or Street...',
  178.                                     Rpt('W',sizeOf(company.Addr1)-1),   
  179.                                    MMGRVAR.PAS Demo progam   Page  4    
  180.   
  181.   
  182.                                     @company.addr1)));
  183.     CompForm.Load(New(StrFldPtr,init(15, 5, SizeOf(company.addr2)-1,':',
  184.                                     'Enter 2nd line of Address if required...',
  185.                                     Rpt('W',sizeOf(company.Addr2)-1),
  186.                                     @company.addr2)));
  187.     CompForm.Load(New(StrFldPtr,init(15, 6, SizeOf(company.City)-1,
  188.                                     'City,St,Zip:','Enter City name...',
  189.                                     Rpt('W',sizeOf(company.City)-1),
  190.                                     @company.City)));
  191.     CompForm.Load(New(StrFldPtr,init(15+sizeof(company.city), 6, SizeOf(company.St)-1,
  192.                                     '','Enter postal Abbrv. for State...',
  193.                                     'UU',@company.St)));
  194.     CompForm.Load(New(StrFldPtr,init(15 + sizeof(company.city) +
  195.                                      SizeOf(Company.st), 6,
  196.                                      SizeOf(company.Zip)-1,
  197.                                      '','Enter zip code...',
  198.                                      ZipMask,@company.Zip)));
  199.     CompForm.Load(New(StrFldPtr,init(15, 7, SizeOf(company.Phone)-1,
  200.                                     'Phone:','Enter Company Phone No...',
  201.                                     PhnMask,@company.Phone)));
  202.     CompForm.Load(New(StrFldPtr,init(15, 8, SizeOf(company.Notes)-1,
  203.                                     'Notes:','Enter notes here...',
  204.                                     Rpt('*',SizeOf(Company.Notes)-1),
  205.                                     @company.Notes)));
  206.     CompForm.Load(New(RStmpFldPtr,Init(15,9,22,'Entered:',
  207.                       @Company.RcSt.InStamp)));
  208.     CompForm.Load(New(RstmpFldPtr,Init(15,10,22,'UpDated:',
  209.                       @Company.RcSt.UpStamp)));
  210.     CompForm.Load(New(DspFldPtr,init(15,12, SizeOf(person.LName)-1,
  211.                                     'Contact(LFM):',
  212.                                     @person.LName)));
  213.     CompForm.Load(New(DspFldPtr,init(15+SizeOf(Person.Lname),12,
  214.                                     SizeOf(person.FName)-1,
  215.                                     '',
  216.                                     @person.FName)));
  217.     CompForm.Load(New(DspFldPtr,init(15 + SizeOf(Person.LName) +
  218.                                     SizeOf(Person.FName) ,12,
  219.                                     SizeOf(person.MName)-1,
  220.                                     '',
  221.                                     @person.MName)));
  222.     CompForm.Load(New(DspFldPtr,init(15, 13, SizeOf(contact.position)-1,
  223.                                     'Position:',
  224.                                     @contact.Position)));
  225.   
  226.   { Initialize  PrsnContForm }
  227.     PrsnContForm.Init(4,18,75,5,queryborder,' CONTACT MAINT. FORM ',
  228.                        ' <Ctrl Z> Exits Form ');
  229.     PrsnContForm.Load(New(StrFldPtr,init(15, 1, SizeOf(person.LName)-1,
  230.                                     'Name(LFM):','Enter Contact''s Last Name...',
  231.                                     Rpt('W',sizeOf(person.LName)-1),
  232.                                     @person.LName)));
  233.     PrsnContForm.Load(New(StrFldPtr,init(15+SizeOf(Person.Lname), 1,
  234.                                     SizeOf(person.FName)-1,
  235.                                     '','Enter Contact''s First Name...',
  236.                                     Rpt('W',sizeOf(person.FName)-1),
  237.                                     @person.FName)));   
  238.                                    MMGRVAR.PAS Demo progam   Page  5    
  239.   
  240.   
  241.     PrsnContForm.Load(New(StrFldPtr,init(15+SizeOf(Person.Lname) +
  242.                                     SizeOf(Person.FName) , 1,
  243.                                     SizeOf(person.MName)-1,
  244.                                     '','Enter Contact''s Middle Name or Initial...',
  245.                                     Rpt('W',sizeOf(person.MName)-1),
  246.                                     @person.MName)));
  247.   
  248.   { Initialize  PersonForm }
  249.     PersonForm.Init(2,5,75,12,DataBorder,'PERSON MAINT. FORM',
  250.                     ' <Ctrl Z> Exits Form ');
  251.     PersonForm.Load(New(StrFldPtr,init(15, 2, SizeOf(person.LName)-1,
  252.                                     'Name(LFM):','Enter Contact''s Last Name...',
  253.                                     Rpt('W',sizeOf(person.LName)-1),
  254.                                     @person.LName)));
  255.     PersonForm.Load(New(StrFldPtr,init(15+SizeOf(Person.Lname), 2,
  256.                                     SizeOf(person.FName)-1,
  257.                                     '','Enter Contact''s First Name...',
  258.                                     Rpt('W',sizeOf(person.FName)-1),
  259.                                     @person.FName)));
  260.     PersonForm.Load(New(StrFldPtr,init(15+SizeOf(Person.Lname) +
  261.                                 SizeOf(Person.FName) , 2,
  262.                                 SizeOf(person.MName)-1,
  263.                                 '',
  264.                                 'Enter Contact''s Middle Name or Initial...',
  265.                                 Rpt('W',sizeOf(person.MName)-1),
  266.                                 @person.MName)));
  267.     { Initialize  TitleMenu - Used in in PickField Object }
  268.     FillChar(M,SizeOf(M),#0);
  269.     WITH M DO
  270.     BEGIN
  271.       Size := 6;
  272.       Txt[ 0] := 'SELECT';
  273.       Txt[ 1] := ' 1 Mr.';
  274.       Txt[ 2] := ' 2 Mrs.';
  275.       Txt[ 3] := ' 3 Ms.';
  276.       Txt[ 4] := ' 4 Miss';
  277.       Txt[ 5] := ' 5 Dr.';
  278.       Txt[ 6] := ' 6 None';
  279.     END;
  280.     PersonForm.Load(New(PckFldPtr,init(15, 3, 4, M,'Title:',@Person.Title)));
  281.     PersonForm.Load(New(StrFldPtr,init(35, 3, SizeOf(person.Salute)-1,
  282.                                     'Salutation:',
  283.                 'Enter Text for addressing this individual, ie.Dear ? ...',
  284.                                     Rpt('W',sizeOf(person.Salute)-1),
  285.                                     @person.Salute)));
  286.     PersonForm.Load(New(TglFldPtr,Init(53,3,8,'Selected','        ','',
  287.                                     @Person.Flag)));
  288.     PersonForm.Load(New(RStmpFldPtr,Init(15, 4,22,'Entered:',
  289.                         @Person.RcSt.InStamp)));
  290.     PersonForm.Load(New(RstmpFldPtr,Init(15, 5,22,'UpDated:',
  291.                         @Person.RcSt.UpStamp)));
  292.     PersonForm.Load(New(DspFldPtr,init(15, 7, SizeOf(contact.position)-1,
  293.                                     'Position:',
  294.                                     @contact.Position)));
  295.     PersonForm.Load(New(DspFldPtr,init(15, 8, SizeOf(company.Name)-1,
  296.                                     'Company:',   
  297.                                    MMGRVAR.PAS Demo progam   Page  6    
  298.   
  299.   
  300.                                     @company.Name)));
  301.   
  302.   { Initialize  CompContForm }
  303.     CompContForm.Init(2,10,75,15,QueryBorder,'CONTACT MAINT. FORM',
  304.                       ' <Ctrl Z> Exits Form ');
  305.     CompContForm.Load(New(StrFldPtr,init(15, 1, SizeOf(company.Alpha)-1,
  306.                                     'AlphaK:','Enter Alphabetic Search Key...',
  307.                                     'UUUUUUUUUUUU',@company.Alpha)));
  308.     CompContForm.Load(New(StrFldPtr,init(15, 2, SizeOf(company.Name)-1,
  309.                                     'Name:','Enter Company Name...',
  310.                                     Rpt('W',sizeOf(company.Name)-1),
  311.                                     @company.Name)));
  312.     CompContForm.Load(New(StrFldPtr,init(15, 3, SizeOf(company.addr1)-1,
  313.                                     'Street:','Enter PO Box or Street...',
  314.                                     Rpt('W',sizeOf(company.Addr1)-1),
  315.                                     @company.addr1)));
  316.     CompContForm.Load(New(StrFldPtr,init(15, 4, SizeOf(company.addr2)-1,':',
  317.                                     'Enter 2nd line of Address if required...',
  318.                                     Rpt('W',sizeOf(company.Addr2)-1),
  319.                                     @company.addr2)));
  320.     CompContForm.Load(New(StrFldPtr,init(15, 5, SizeOf(company.City)-1,
  321.                                     'City,St,Zip','Enter City name...',
  322.                                     Rpt('W',sizeOf(company.City)-1),
  323.                                     @company.City)));
  324.     CompContForm.Load(New(StrFldPtr,init(15, 5, SizeOf(company.St)-1,
  325.                                     '','Enter postal Abbrv. for State...',
  326.                                     'UU',@company.St)));
  327.     CompContForm.Load(New(StrFldPtr,init(15, 5, SizeOf(company.Zip)-1,
  328.                                     '','Enter zip code...',
  329.                                     ZipMask,@company.Zip)));
  330.     CompContForm.Load(New(StrFldPtr,init(15, 6, SizeOf(company.Phone)-1,
  331.                                     'Phone:','Enter Company Phone No...',
  332.                                     PhnMask,@company.Phone)));
  333.     CompContForm.Load(New(StrFldPtr,init(15, 7, SizeOf(company.Notes)-1,
  334.                                     'Notes:','Enter notes here...',
  335.                                     Rpt('*',SizeOf(Company.Notes)-1),
  336.                                     @company.Notes)));
  337.     CompContForm.Load(New(StrFldPtr,init(15, 8, SizeOf(contact.position)-1,
  338.                                     'Position:',
  339.                                     'Enter position held by individual at this company...',
  340.                                     Rpt('W',SizeOf(Contact.Position)-1),
  341.                                     @contact.Position)));
  342.   
  343.   END;       { InitForms }
  344.   
  345.   PROCEDURE InitMenus;
  346.   { Initializes System Menu Objects - Menus are managed by WINDOWS Unit }
  347.   { part of ObjectInterFace.                                            }
  348.   
  349.   VAR
  350.     M : MenuArray;  { Defined in WINDOWS Unit of ObjectInterFace        }
  351.   
  352.   BEGIN      { InitMenus }
  353.   { Initialize  MainMenu }
  354.     FillChar(M,SizeOf(M),#0);
  355.     WITH M DO   
  356.                                    MMGRVAR.PAS Demo progam   Page  7    
  357.   
  358.   
  359.     BEGIN
  360.       Size := 5;
  361.       Txt[ 0] := 'MAIN MENU';
  362.       Txt[ 1] := ' Company maint...';
  363.       Txt[ 2] := ' Person maint ...';
  364.       Txt[ 3] := ' Reports      ...';
  365.       Txt[ 4] := ' Utilities    ...';
  366.       Txt[ 5] := ' Quit program';
  367.     END;
  368.     MainMenu.init(65,4,MenuBorder,M);
  369.   
  370.   { Initialize  CompanyMenu }
  371.     FillChar(M,SizeOf(M),#0);
  372.     WITH M DO
  373.     BEGIN
  374.       Size := 10;
  375.       Txt[ 0] := 'COMPANY MAINT';
  376.       Txt[ 1] := ' Edit company';
  377.       Txt[ 2] := ' Find company';
  378.       Txt[ 3] := ' Next company';
  379.       Txt[ 4] := ' Prev company';
  380.       Txt[ 5] := ' Add company';
  381.       Txt[ 6] := ' Select/deSelect';
  382.       Txt[ 7] := ' Contact add ...';
  383.       Txt[ 8] := ' cOntact next';
  384.       Txt[ 9] := ' Del contact';
  385.       Txt[10] := ' Quit company mnt';
  386.     END;
  387.     CompanyMenu.init(65,4,MenuBorder,M);
  388.   
  389.   { Initialize  PersonMenu }
  390.     FillChar(M,SizeOf(M),#0);
  391.     WITH M DO
  392.     BEGIN
  393.       Size := 10;
  394.       Txt[ 0] := 'PERSON MAINT';
  395.       Txt[ 1] := ' Edit person';
  396.       Txt[ 2] := ' Find person';
  397.       Txt[ 3] := ' Next person';
  398.       Txt[ 4] := ' Prev person';
  399.       Txt[ 5] := ' Add person';
  400.       Txt[ 6] := ' Select/deSelect';
  401.       Txt[ 7] := ' Contact add ...';
  402.       Txt[ 8] := ' cOntact next';
  403.       Txt[ 9] := ' Del contact';
  404.       Txt[10] := ' Quit person mnt';
  405.     END;
  406.     PersonMenu.init(65,4,MenuBorder,M);
  407.   
  408.   { Initialize  CompContMenu }
  409.     FillChar(M,SizeOf(M),#0);
  410.     WITH M DO
  411.     BEGIN
  412.       Size := 5;
  413.       Txt[ 0] := 'PERSON SEARCH';
  414.       Txt[ 1] := ' Correct person';   
  415.                                    MMGRVAR.PAS Demo progam   Page  8    
  416.   
  417.   
  418.       Txt[ 2] := ' Next person';
  419.       Txt[ 3] := ' Prev person';
  420.       Txt[ 4] := ' Add person';
  421.       Txt[ 5] := ' Quit search';
  422.     END;
  423.     CompContMenu.init(65,4,MenuBorder,M);
  424.   
  425.   { Initialize  PrsnContMenu }
  426.     FillChar(M,SizeOf(M),#0);
  427.     WITH M DO
  428.     BEGIN
  429.       Size := 5;
  430.       Txt[ 0] := 'COMPANY SEARCH';
  431.       Txt[ 1] := ' Correct company';
  432.       Txt[ 2] := ' Next company';
  433.       Txt[ 3] := ' Prev company';
  434.       Txt[ 4] := ' Add company';
  435.       Txt[ 5] := ' Quit search';
  436.     END;
  437.     PrsnContMenu.init(65,4,MenuBorder,M);
  438.   
  439.   { Initialize  PersonContDelMenu }
  440.     FillChar(M,SizeOf(M),#0);
  441.     WITH M DO
  442.     BEGIN
  443.       Size := 3;
  444.       Txt[ 0] := 'CONTACT DELETE';
  445.       Txt[ 1] := ' Del this relation';
  446.       Txt[ 2] := ' Next relation';
  447.       Txt[ 3] := ' Abort delete';
  448.     END;
  449.     PersonContDelMenu.init(65,4,MenuBorder,M);
  450.   
  451.   { Initialize  ReportMenu }
  452.     FillChar(M,SizeOf(M),#0);
  453.     WITH M DO
  454.     BEGIN
  455.       Size := 4;
  456.       Txt[ 0] := 'REPORTS MENU';
  457.       Txt[ 1] := ' Mail labels   ...';
  458.       Txt[ 2] := ' Company report...';
  459.       Txt[ 3] := ' conTact report...';
  460.       Txt[ 4] := ' Quit reports';
  461.     END;
  462.     ReportMenu.init(65,4,MenuBorder,M);
  463.   
  464.   { Initialize  LabelsMenu }
  465.     FillChar(M,SizeOf(M),#0);
  466.     WITH M DO
  467.     BEGIN
  468.       Size := 3;
  469.       Txt[ 0] := 'LABELS MENU';
  470.       Txt[ 1] := ' Contacts @company';
  471.       Txt[ 2] := ' cOmpany';
  472.       Txt[ 3] := ' Quit labels';
  473.     END;   
  474.                                    MMGRVAR.PAS Demo progam   Page  9    
  475.   
  476.   
  477.     LabelsMenu.init(65,4,MenuBorder,M);
  478.   
  479.   { Initialize  CompLstMenu }
  480.     FillChar(M,SizeOf(M),#0);
  481.     WITH M DO
  482.     BEGIN
  483.       Size := 3;
  484.       Txt[ 0] := 'COMPANY REPORT';
  485.       Txt[ 1] := ' w/ Contacts';
  486.       Txt[ 2] := ' w/O contacts';
  487.       Txt[ 3] := ' Quit company rpts';
  488.     END;
  489.     CompLstMenu.init(65,4,MenuBorder,M);
  490.   
  491.   { Initialize  DeviceMenu }
  492.     FillChar(M,SizeOf(M),#0);
  493.     WITH M DO
  494.     BEGIN
  495.       Size := 4;
  496.       Txt[ 0] := 'DESTINATION';
  497.       Txt[ 1] := ' Screen';
  498.       Txt[ 2] := ' Printer';
  499.       Txt[ 3] := ' File';
  500.       Txt[ 4] := ' Abort';
  501.     END;
  502.     DeviceMenu.init(65,4,MenuBorder,M);
  503.   
  504.   { Initialize  UtilMenu }
  505.     FillChar(M,SizeOf(M),#0);
  506.     WITH M DO
  507.     BEGIN
  508.       Size := 3;
  509.       Txt[ 0] := 'UTILITY MENU';
  510.       Txt[ 1] := ' Screen colors';
  511.       Txt[ 2] := ' saVe data';
  512.       Txt[ 3] := ' Quit utility';
  513.     END;
  514.     utilMenu.init(65,4,MenuBorder,M);
  515.   
  516.   END;       { InitMenus }
  517.   
  518.   END.       { mmgrvars.pas }
  519.   
  520.